package com.alex.algorithm.easy;

import java.util.HashMap;
import java.util.Map;

public class SubarraySumEqualK {

    public static void main(String[] args) {
//        System.out.println(subArraySum(new int[]{1,1,1}, 2));
        System.out.println(subArraySum(new int[]{1,2,3,3,0,3,4,2}, 6));
    }

    public static int subArraySum(int[] array, int target) {
        Map<Integer, Integer> sumMap = new HashMap<>();
        int count = 0;
        int sum = 0;
        for (int i = 0; i < array.length; ++i) {
            sum += array[i];
            if (sum == target) {
                ++count;
            }
            if (sumMap.get(sum - target) != null) {
                count += sumMap.get(sum - target);
            }
            if(sumMap.get(sum) == null) {
                sumMap.put(sum, 1);
            }else {
                sumMap.put(sum, sumMap.get(sum) + 1);
            }
        }
        return count;
    }
}
